home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Personal Computer World 2005 October
/
PCWOCT05.iso
/
Software
/
FromTheMag
/
Ant Movie Catalog 3.5.0.2
/
amc_install.exe
/
{app}
/
Scripts
/
xpress.hu.ifs
< prev
next >
Wrap
Text File
|
2005-03-13
|
14KB
|
429 lines
(***************************************************
Ant Movie Catalog importation script
www.antp.be/software/moviecatalog/
[Infos]
Authors=Zoltan Karpati (<link>pinyo@gibzone.hu</link>)
Title=Xpress.hu
Description=Xpress.hu (HUN) import
Site=http://www.xpress.hu
Language=HU
Version=1.1
Requires=3.5.0
Comments=
License=This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. |
GetInfo=1
[Options]
***************************************************)
program xpress;
var
MovieName: string;
function GetPicFormat(PicFormat: string): String;
begin
if PicFormat = '1.gif' then result := '(4:3/FF)';
if PicFormat = '2.gif' then result := '(4:3/1.54:1)';
if PicFormat = '3.gif' then result := '(4:3/1.66:1)';
if PicFormat = '4.gif' then result := '(4:3/1.78:1)';
if PicFormat = '5.gif' then result := '(4:3/1.85:1)';
if PicFormat = '6.gif' then result := '(4:3/2.35:1)';
if PicFormat = '7.gif' then result := '(16:9/1.66:1)';
if PicFormat = '8.gif' then result := '(16:9/1.78:1)';
if PicFormat = '9.gif' then result := '(16:9/1.85:1)';
if PicFormat = '10.gif' then result := '(16:9/2.35:1)';
if PicFormat = '11.gif' then result := '(16:9/2.40:1)';
if PicFormat = '12.gif' then result := '(4:3/2.40:1)';
if PicFormat = '13.gif' then result := '(4:3/PS)';
if PicFormat = '14.gif' then result := '(16:9/2.76:1)';
if PicFormat = '15.gif' then result := '(16:9/2.5:1)';
end;
function Rating(Rated: string): String;
begin
if ((Rated > '0') and (Rated < '5')) then result := '0';
if ((Rated >= '5') and (Rated < '15')) then result := '1';
if ((Rated >= '15') and (Rated < '25')) then result := '2';
if ((Rated >= '25') and (Rated < '35')) then result := '3';
if ((Rated >= '35') and (Rated < '45')) then result := '4';
if ((Rated >= '45') and (Rated < '55')) then result := '5';
if ((Rated >= '55') and (Rated < '65')) then result := '6';
if ((Rated >= '65') and (Rated < '75')) then result := '7';
if ((Rated >= '75') and (Rated < '85')) then result := '8';
if ((Rated >= '85') and (Rated < '95')) then result := '9';
if (Rated >= '95') then result := '10';
end;
function RemoveHTML(Szoveg: string): String;
begin
Szoveg := StringReplace(Szoveg, '%20', ' ');
Szoveg := StringReplace(Szoveg, '<i>', '');
Szoveg := StringReplace(Szoveg, '</i>', '');
Szoveg := StringReplace(Szoveg, '<b>', '');
Szoveg := StringReplace(Szoveg, '</b>', '');
Szoveg := StringReplace(Szoveg, ' ', ' ');
Szoveg := StringReplace(Szoveg, ' ', ' ');
Szoveg := StringReplace(Szoveg, ' ', ' ');
Szoveg := StringReplace(Szoveg, ' ', ' ');
Szoveg := StringReplace(Szoveg, '<li>', chr(13)+chr(10));
Szoveg := StringReplace(Szoveg, '</p>', chr(13)+chr(10));
HTMLRemovetags(Szoveg);
HTMLDecode(Szoveg);
result := Trim(Szoveg);
end;
function AddHTML(Szoveg: string): String;
begin
Szoveg := StringReplace(Szoveg, ' ','%20');
result := Szoveg;
end;
function FindLine(Pattern: string; List: TStringList; StartAt: Integer): Integer;
var
i: Integer;
begin
result := -1;
if StartAt < 0 then
StartAt := 0;
for i := StartAt to List.Count-1 do
if Pos(Pattern, List.GetString(i)) <> 0 then
begin
result := i;
Break;
end;
end;
procedure AnalyzePage(Address: string);
var
Page: TStringList;
LineNr: Integer;
begin
Page := TStringList.Create;
Page.Text := GetPage(Address);
if pos('karaktersor', Page.Text) = 0 then
begin
AnalyzeMoviePage(Page)
end else
begin
PickTreeClear;
LineNr := 0;
LineNr := FindLine('<a href="film.asp?FILMAZ=', Page, LineNr);
if LineNr > -1 then
begin
PickTreeAdd('DVD Movies', '');
AddMoviesTitles(Page, LineNr);
end;
if PickTreeExec(Address) then
AnalyzePage(Address);
end;
Page.Free;
end;
procedure AnalyzeMoviePage(Page: TStringList);
var
Line, Value, Value2, FullValue: string;
LineNr: Integer;
Adder: Integer;
Rate: Integer;
BeginPos, EndPos: Integer;
begin
SetField(fieldSource,'XPress.hu');
SetField(fieldMediaType, 'DVD');
// fieldURL
LineNr := FindLine('../shop/rendel.asp?FILMID=', Page, 0);
if LineNr > -1 then
begin
Line := Page.GetString(LineNr);
BeginPos := pos('FILMID=', Line)+7;
EndPos := pos('&', Line);
Value := copy(Line, BeginPos, EndPos - BeginPos);
SetField(fieldURL, 'http://www.xpress.hu/dvd/film.asp?FILMAZ=' + Value );
end;
// fieldProducer - studi≤
LineNr := FindLine('st·di≤ </font>', Page, 0);
if LineNr > -1 then
begin
Line := Page.GetString(LineNr+5);
BeginPos := pos('"menulink">', Line)+11;
EndPos := pos('</a>', Line);
Value := copy(Line, BeginPos, EndPos - BeginPos);
SetField(fieldProducer,RemoveHTML(Value));
end;
// fieldRating
LineNr := FindLine('m2cimsor.gif', Page, 0);
if LineNr > -1 then
begin
Line := Page.GetString(LineNr+15);
BeginPos := pos('sans-serif">', Line)+12;
EndPos := pos('%', Line);
Value := copy(Line, BeginPos, EndPos - BeginPos);
Value := Rating(Value);
SetField(fieldRating,Value);
end;
// fieldLength
LineNr := FindLine('film hossza</font>', Page, 0);
if LineNr > -1 then
begin
Line := Page.GetString(LineNr+5);
BeginPos := pos('"#000000">', Line)+9;
Delete(line,1,BeginPos);
EndPos := pos(' ', Line);
Value := copy(Line, 1, EndPos-1);
SetField(fieldLength,RemoveHTML(Value));
end;
LineNr := FindLine('>Feliratok<', Page, 0);
if LineNr > -1 then
begin
Line := Page.GetString(LineNr+6);
BeginPos := pos('sans-serif">', Line)+12;
EndPos := pos('</font>', Line);
Value := copy(Line, BeginPos, EndPos - BeginPos);
SetField(fieldSubtitles,RemoveHTML(Value));
end;
LineNr := FindLine('>Hangsßvok<', Page, 0);
if LineNr > -1 then
begin
Adder := 5;
repeat
Value2 := '';
Line := Page.GetString(LineNr + Adder);
BeginPos := pos('size="1">', Line);
if BeginPos > 1 then
begin
BeginPos := Beginpos + 9;
EndPos := pos('<br>',Line);
Value := copy(Line, BeginPos, EndPos - BeginPos);
Line := Page.GetString(LineNr + Adder + 1);
if pos('hang/1.gif',Line) > 0 then Value2 := '(DD5.1)';
if pos('hang/2.gif',Line) > 0 then Value2 := '(Sztereo)';
if pos('hang/3.gif',Line) > 0 then Value2 := '(Surround)';
if pos('hang/4.gif',Line) > 0 then Value2 := '(Mono)';
if pos('hang/5.gif',Line) > 0 then Value2 := '(Mono)';
if pos('hang/6.gif',Line) > 0 then Value2 := '(DTS)';
if pos('hang/7.gif',Line) > 0 then Value2 := '(DD5.1)';
if pos('hang/12.gif',Line) > 0 then Value2 := '(DD5.0)';
if pos('hang/13.gif',Line) > 0 then Value2 := '(3.0)';
if pos('hang/14.gif',Line) > 0 then Value2 := '(4.0)';
if pos('hang/15.gif',Line) > 0 then Value2 := '(DD5.1EX)';
if pos('hang/16.gif',Line) > 0 then Value2 := '(DD4.1)';
if pos('hang/17.gif',Line) > 0 then Value2 := '(DTS ES)';
if FullValue > '' then Fullvalue := Fullvalue + ', ';
FullValue := FullValue + Value + ' ' + Value2;
end
Adder := Adder + 1;
until pos('eeeeee', Line) > 0;
SetField(fieldLanguages,RemoveHTML(FullValue));
end;
// fieldComments Title
LineNr := FindLine('kepek/kepform/', Page, 0);
FullValue := '';
if LineNr > -1 then
begin
repeat
Line := Page.GetString(LineNr);
BeginPos := pos('kepek/kepform/', Line);
if BeginPos > 1 then
begin
BeginPos := BeginPos + 14;
EndPos := pos('">', Line);
Value := copy(Line, BeginPos, EndPos - BeginPos);
Value := GetPicFormat(Value);
if FullValue > '' then Fullvalue := Fullvalue + ', ';
FullValue := FullValue + Value;
Delete(Line,1,EndPos);
BeginPos := pos('kepek/kepform/', Line);
if BeginPos > 1 then
begin
BeginPos := BeginPos + 14;
EndPos := pos('">', Line);
Value := copy(Line, BeginPos, EndPos - BeginPos);
Value := GetPicFormat(Value);
if FullValue > '' then Fullvalue := Fullvalue + ', ';
FullValue := FullValue + Value;
end
end
LineNr := FindLine('kepek/kepform/', Page, LineNr);
until LineNr > -1;
SetField(fieldComments,FullValue);
end;
// Picture
LineNr := FindLine('cover/nagy/', Page, 0);
if LineNr > -1 then
begin
Line := Page.GetString(LineNr);
BeginPos := pos('cover/nagy/', Line);
Delete(Line, 1, BeginPos-1);
EndPos := pos(',', Line);
Value := copy(Line, 1, EndPos - 2);
GetPicture('http://www.xpress.hu/dvd/' + Value);
end;
// fieldTranslated Title
LineNr := FindLine('#cc3300', Page, 0);
Line := Page.GetString(LineNr);
if LineNr > -1 then
begin
BeginPos := pos('#cc3300', Line)+12;
EndPos := pos('</b>', Line);
Value := copy(Line, BeginPos, EndPos - BeginPos);
SetField(fieldTranslatedTitle,RemoveHTML(Value));
end;
// Original Title & Year Country
if LineNr > -1 then
begin
Line := Page.GetString(LineNr+1);
BeginPos := pos('#000000', Line)+8;
Delete(Line, 1, BeginPos);
Value := Line;
SetField(fieldOriginalTitle, RemoveHTML(Value));
end;
if LineNr > -1 then
begin
Line := Page.GetString(LineNr+2);
BeginPos := pos('(', Line) + 1;
EndPos := Pos('-', Line);
Value := copy(Line, BeginPos, EndPos - BeginPos-1);
SetField(fieldCountry, Value);
end;
if LineNr > -1 then
begin
Line := Page.GetString(LineNr+2);
BeginPos := pos('-', Line) + 1;
EndPos := Pos(')', Line);
Value := copy(Line, BeginPos, EndPos - BeginPos);
SetField(fieldYear, Value);
end;
// Director
LineNr := FindLine('Rendezte:', Page, 0);
if LineNr > -1 then
begin
Line := Page.GetString(LineNr+1);
FullValue := '';
repeat
BeginPos := pos('menulink">', Line) + 9;
Delete(Line,1,BeginPos);
EndPos := pos('</a>', Line)-1;
Value := copy(Line, 1, EndPos);
HTMLDecode(Value);
if FullValue > '' then Fullvalue := Fullvalue + ', ';
FullValue := FullValue + Value;
Delete(Line, 1, EndPos);
until pos('menulink">', Line) = 0;
SetField(fieldDirector, RemoveHTML(FullValue));
end;
// Actors
LineNr := FindLine('>Szerepl⌡k:<', Page, 0);
if LineNr > -1 then
begin
Line := Page.GetString(LineNr+1);
FullValue := '';
repeat
BeginPos := pos('NEV=', Line) + 4;
EndPos := pos('VID', Line);
Value := copy(Line, BeginPos, EndPos - BeginPos-1);
HTMLDecode(Value);
if FullValue > '' then Fullvalue := Fullvalue + ', ';
FullValue := FullValue + Value;
Delete(Line, 1, EndPos);
until pos('NEV=', Line) = 0;
SetField(fieldActors, RemoveHTML(FullValue));
end;
//Category
LineNr := FindLine('>M√faj:<', Page, 0);
if LineNr > -1 then
begin
Line := Page.GetString(LineNr + 1);
BeginPos := pos('#990000">', Line) + 9;
EndPos := pos('</', Line);
Value := copy(Line, BeginPos, EndPos - BeginPos);
SetField(fieldCategory, RemoveHTML(Value));
end;
//Description
LineNr := FindLine('>Tartalom:<', Page, 0);
if LineNr > -1 then
begin
Adder := 6;
Line := Page.GetString(LineNr + 5);
BeginPos := pos('color="#000000">', Line);
Delete(Line, 1, BeginPos+15);
FullValue := RemoveHTML(Line);
repeat
Value := Page.GetString(LineNr + Adder);
FullValue := FullValue + Value;
Adder := Adder + 1 ;
until (pos('</td>', Value) > 0);
SetField(fieldDescription, RemoveHTML(FullValue));
end;
//DisplayResults;
end;
procedure AddMoviesTitles(Page: TStringList; var LineNr: Integer);
var
Line: string;
MovieTitle, MovieAddress,OTitle: string;
StartPos: Integer;
begin
repeat
LineNr := LineNr + 1;
Line := Page.GetString(LineNr);
StartPos := pos('0000" size="2">', Line);
if StartPos > 0 then
begin
StartPos := pos('FILMAZ=', Line)+7;
MovieAddress := copy(Line, StartPos, pos('VID', Line) - StartPos - 5);
StartPos := pos('0000" size="2">', Line)+15;
MovieTitle := copy(Line, StartPos, pos('</a>', Line) - StartPos - 39);
LineNr := FindLine('<font size="1">', Page, LineNr+1);
Line := Page.GetString(LineNr);
StartPos := pos('<font color="#666666">', Line)+22;
OTitle := copy(Line, StartPos, pos('</font>', Line) - StartPos);
PickTreeAdd(MovieTitle+'--'+OTitle, 'http://www.xpress.hu/dvd/film.asp?FILMAZ=' + MovieAddress);
end;
until pos('</html>', Line) > 0;
end;
begin
if CheckVersion(3,5,0) then
begin
MovieName := GetField(fieldOriginalTitle);
if MovieName = '' then
MovieName := GetField(fieldTranslatedTitle);
if Input('Xpress.hu Import', 'Add meg a filme cφmΘt:', MovieName) then
begin
AnalyzePage('http://www.xpress.hu/dvd/keres.asp?keres='+AddHTML(MovieName)+'&VID=12219327439007175&GOMB=1');
end;
end else
ShowMessage('This script requires a newer version of Ant Movie Catalog (at least the version 3.5.0)');
end.